<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>前/后端协议</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="CHAPTER">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="view-pg-views.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="catalogs.html">快退</a></td><td width="60%" align="center" valign="bottom"></td><td width="10%" align="right" valign="top"><a href="source.html">快进</a></td><td width="10%" align="right" valign="top"><a href="protocol-overview.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="CHAPTER"><h1><a name="PROTOCOL"></a>章44. 前/后端协议</h1>
<div>
<dl>
<dt><b>目录</b></dt>
<dt>44.1. <a href="protocol-overview.html">概述</a></dt>
<dd><dl>
<dt>44.1.1. <a href="protocol-overview.html#PROTOCOL-MESSAGE-CONCEPTS">消息概貌</a></dt>
<dt>44.1.2. <a href="protocol-overview.html#PROTOCOL-QUERY-CONCEPTS">扩展查询概述</a></dt>
<dt>44.1.3. <a href="protocol-overview.html#PROTOCOL-FORMAT-CODES">格式和格式代码</a></dt>
</dl></dd>
<dt>44.2. <a href="protocol-flow.html">消息流</a></dt>
<dd><dl>
<dt>44.2.1. <a href="protocol-flow.html#AEN66744">启动</a></dt>
<dt>44.2.2. <a href="protocol-flow.html#AEN66809">简单查询</a></dt>
<dt>44.2.3. <a href="protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY">扩展查询</a></dt>
<dt>44.2.4. <a href="protocol-flow.html#AEN66923">函数调用</a></dt>
<dt>44.2.5. <a href="protocol-flow.html#PROTOCOL-COPY">COPY 操作</a></dt>
<dt>44.2.6. <a href="protocol-flow.html#PROTOCOL-ASYNC">异步操作</a></dt>
<dt>44.2.7. <a href="protocol-flow.html#AEN66999">取消正在处理的请求</a></dt>
<dt>44.2.8. <a href="protocol-flow.html#AEN67007">终止</a></dt>
<dt>44.2.9. <a href="protocol-flow.html#AEN67016">SSL 会话加密</a></dt>
</dl></dd>
<dt>44.3. <a href="protocol-message-types.html">消息数据类型</a></dt>
<dt>44.4. <a href="protocol-message-formats.html">消息格式</a></dt>
<dt>44.5. <a href="protocol-error-fields.html">错误和通知消息字段</a></dt>
<dt>44.6. <a href="protocol-changes.html">自协议 2.0 以来的变化的概述</a></dt>
</dl>
</div>
<p>PostgreSQL 使用一种基于消息的协议用于前端和后端(服务器和客户机)之间通讯。该协议是在 TCP/IP 和 Unix 域套接字上实现的。端口号 5432 已经在 IANA 注册为使用这种协议的常用端口，但实际上任何非特权端口号都可以使用。</p>
<p>这份文档描述了版本 3.0 的协议，在 PostgreSQL 7.4 和以后的版本中实现。对于以前的协议的描述，请参考以前版本的 PostgreSQL 文档。一个服务器可以支持多种协议版本。初始化的启动信息告诉服务器客户端可以接受的协议版本，然后服务器则遵守该版本的协议(如果它能做到的话)。</p>
<p>在这个协议的基础上建立的更高级特性(例如 <span class="APPLICATION">libpq</span> 是如何在建立连接以后传递某种环境变量的)在其它地方描述。</p>
<p>为了可以有效地为多个客户端提供服务，服务器为每个客户端派生一个新的"后端"进程。在目前的实现里，在检测到到来的连接请求后，马上创建一个新的子进程。不过，这些是对协议透明的。对于协议而言，术语"后端"和"服务器"是可以互换的；类似的还有"前端"和"客户机"也是可以互换的。</p>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="view-pg-views.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="protocol-overview.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top"><tt class="STRUCTNAME">pg_views</tt></td><td width="34%" align="center" valign="top"><a href="internals.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">概述</td></tr>
</table>
</div>
</body></html>